// 类
export class Animal {
	// 实例属性
	name: string
	age: number
	// 构造器
	constructor(name: string, age: number) {
		this.name = name
		this.age = age
	}
	// 原型方法
	sayName() {
		console.log(`我是${this.name}，今年${this.age}岁了`)
	}
	// 静态属性
	static tt = 123
	// 静态方法
	static sayName() {
		console.log('我是静态方法 sayName')
	}

}
// 调用
const cat = new Animal('猫', 3)
const dog = new Animal('狗', 5)
// cat.sayName()
// dog.sayName()
// Animal.sayName()
// console.log(Animal.tt)

// 类 继承 & 修饰符
// 基类(父类)
class Father {
	// 随时可以访问
	public name: string
	// 只能在类“Father”及其子类中访问
	protected age: number
	// 只能在类“Father”中访问
	private money = 200
	public constructor(name: string, age: number) {
		this.age = age
		this.name = name

		this.money
	}
}
// 派生类(子类)
class Son extends Father {
	public sex: string
	public constructor(name: string, age: number, sex: string) {
		// 父类 constructor
		super(name, age);
		// 使用this 必须在super之后
		this.sex = sex
		this.age
		// this.money
	}
}
const s = new Son('张三', 18, '男')
// s.age
// s.money



